package cn.tedu.oop;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

/*本类用于静态static的入门案例*/
public class TestStatic1 {
    public static void main(String[] args) {
        Fruit f = new Fruit();
        Fruit f1 = new Fruit();
        f.grow();
        f1.clean();//没有提示需要自己写

        Fruit.clean();//我们可以通过类名直接调用静态方法，而且这个idea会提示
        System.out.println(f.weight);
        System.out.println(f.kind);//没提示
        System.out.println(Fruit.kind);//有提示，类名直接调用静态属性
        /*3、静态资源在内存中只有一份，而且被全局所有对象所共享
        * 所以：当我们通过任意一种方式修改了静态变量的值以后
        * 不管用何种方式查看，静态变量的值都是刚刚修改后的值*/
        Fruit.kind ="苹果";
        System.out.println(Fruit.kind);
        System.out.println(f.kind);
        System.out.println(f.kind);
        f.kind = "香蕉";
        System.out.println(Fruit.kind);
        System.out.println(f.kind);
        System.out.println(f.kind);
        f1.kind = "猕猴桃";
        System.out.println(Fruit.kind);
        System.out.println(f1.kind);
        System.out.println(f1.kind);
    }
}
/*0、被static修饰的资源统称为静态资源
* 静态资源是随着类加载而加载到内存中的，比对象优先进入内存
* 所有静态资源可以通过类名直接调用，即使没有创建对象，也可以调用*/
class Fruit{
//    定义属性
    /*1、可以用static修饰属性吗？可以*/
    static String kind;//品种
    double weight;//重量
    int a = 10;
//    定义普通方法
    /*2、可以用static修饰方法吗？可以*/
    public static void  clean(){
        System.out.println(kind);
        System.out.println("洗水果呀洗水果");
    }
    public void grow(){

        System.out.println("这个果子长得一看就很好吃");
    }
}
